package es.uma.scgt.mail;

import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import org.apache.log4j.Logger;

public class Correo {
	
	private static Logger logger = Logger.getLogger(Correo.class);

	private static Properties propiedades;
	private Session sesionCorreo;

	final String usuario = "anadominguezperez@gmail.com";
	final String contrasena = "princesitas";
	
	public Correo() {
		Correo.propiedades = new Properties();
		Correo.propiedades.put("mail.smtp.auth", "true");
		Correo.propiedades.put("mail.smtp.starttls.enable", "true");
		Correo.propiedades.put("mail.smtp.host", "smtp.gmail.com");
		Correo.propiedades.put("mail.smtp.port", "587");
		
		sesionCorreo = Session.getInstance(propiedades,
				new javax.mail.Authenticator() {
					protected PasswordAuthentication getPasswordAuthentication() {
						return new PasswordAuthentication(usuario, contrasena);
					}
				});
	}

	public boolean enviarCorreo(List<String> enviarA, String asunto, String texto) {
		try {
			Message messaje = new MimeMessage(sesionCorreo);
			
			InternetAddress[] arrayEnviarA = new InternetAddress[enviarA.size()];
			int contador = 0;
			for (String enviar : enviarA) {				
				arrayEnviarA[contador] = new InternetAddress(enviar);
				contador++;
			}
			
			messaje.setRecipients(Message.RecipientType.TO,	arrayEnviarA);
			messaje.setSubject(asunto);
			//messaje.setText(texto);
			messaje.setContent(texto,"text/html");

			//Transport.send(messaje);
			logger.info("Correo enviado con exito a: "+enviarA.toString());
		} catch (AddressException e) {
			logger.error("No se ha podido enviar el email: " + e.getMessage(), e);
			return false;
		} catch (MessagingException e) {
			logger.error("No se ha podido enviar el email: " + e.getMessage(), e);
			return false;
		}
		return true;
	}
	
//	public boolean creacionUsuario(Usuario usuario){
//		//enviarCorreo(enviarA, "Bienvenido a SCGT", "Gracias por crearte una cuenta con nosotros"+usuario.getEmail()+"gfdgfdgfdgfdgfdg")
//		return true;
//	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		Correo c = new Correo();

		List<String> enviarA = new ArrayList<String>();
		enviarA.add("anadominguezperez@gmail.com");
		enviarA.add("rubenteso@gmail.com");
		c.enviarCorreo(enviarA, "asunto", "mensaje de prueba");
	}

}
